import { defineStore } from 'pinia';

// 定义名为useSearchHistoryStore的Pinia存储
export const useSearchHistoryStore = defineStore('searchHistory', {
    // 定义state，它是一个函数，返回包含存储状态数据的对象，这里包含history数组用于存储搜索历史记录
    state: () => ({
        history: []
    }),
    // 定义actions，包含可以改变状态的函数（方法）
    actions: {
        // 定义函数用于存储搜索历史记录，接收一个关键字参数keyword
        storeSearchHistory(keyword) {
            // 检查传入的关键字是否已经存在于历史记录数组中，如果不存在
            if (!this.history.includes(keyword)) { 
                // 将关键字添加到历史记录数组中，this指向当前的Pinia存储实例
                this.history.push(keyword); 
            }
        },
        // 定义函数用于从localStorage中加载搜索历史记录
        loadSearchHistory() {
            // 从localStorage中获取名为'searchHistory'的键对应的历史记录，并解析为JavaScript数组，若不存在则为null
            const storedHistory = JSON.parse(localStorage.getItem('searchHistory')); 
            if (storedHistory) {
                // 如果获取到了历史记录，则将当前存储的history属性设置为获取到的历史记录数组
                this.history = storedHistory; 
            }
        }
    },
    // 配置持久化相关选项
    persist: {
        // 启用持久化功能，设置为true表示开启
        enabled: true, 
        strategies: [
            {
                // 指定存储到localStorage中的键名，用于标识存储的数据
                key: 'searchHistory', 
                // 指定存储的介质为localStorage
                storage: localStorage 
            }
        ]
    }
});